// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Unlock Endless Entertainment: Get PinUp Casino Free Spins & Play Online in English for India – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Unlock Endless Entertainment: Get PinUp Casino Free Spins & Play Online in English for India

PinUp Casino: Unlock Endless Entertainment with Free Spins in India

Looking to unlock endless entertainment in India? Look no further than PinUp Casino! With a wide variety of games and exciting features, PinUp is the perfect destination for Indian players. And now, with free spins available, there’s never been a better time to join.
Not only does PinUp offer a huge selection of slots, table games, and live dealer options, but they also have a generous welcome bonus for new players. And with free spins, you can try out some of the most popular slots without risking any of your own money.
But that’s not all – PinUp also has a mobile-friendly platform, so you can play your favorite games anytime, anywhere. Plus, their customer support team is available 24/7 to help with any questions or concerns.
So why wait? Sign up for PinUp Casino today and unlock endless entertainment with free spins in India. Whether you’re a seasoned gambler or just looking to try something new, PinUp has something for everyone.
Join now and discover why PinUp is the hottest online casino in India!

Experience Online Gambling Like Never Before: Get Your PinUp Casino Free Spins Today

Are you ready to take your online gambling experience to the next level? Look no further than PinUp Casino, now available in India! With our exclusive free spins offer, you can start winning big without risking a single rupee.
At PinUp Casino, we pride ourselves on providing a wide variety of games to suit every taste, from classic slots to thrilling table games. Our platform is user-friendly and easy to navigate, ensuring that you can focus on the excitement of the game.
But that’s not all – our state-of-the-art security measures mean that you can rest assured that your personal and financial information is always safe with us. Plus, our customer support team is available 24/7 to answer any questions or concerns you may have.
So why wait? Experience online gambling like never before with PinUp Casino’s free spins offer. Sign up today and start winning big!

Play Your Favorite Casino Games in English: PinUp Casino Offers Free Spins for Indian Players

Are you an Indian player looking to play your favorite casino games in English? Look no further than PinUp Casino! Not only do they offer a wide variety of popular casino games, but they also provide free spins for Indian players.
Experience the thrill of online gambling with PinUp Casino’s user-friendly platform, available in English for your convenience. Whether you’re a seasoned pro or new to the world of casino games, you’ll find something to love at PinUp.
So why wait? Sign up today and take advantage of their generous free spins offer for Indian players. Who knows – your next big win could be just a few clicks away!
At PinUp Casino, the fun never stops. With new games and promotions added regularly, there’s always something exciting happening on their site. Plus, their top-notch customer service and secure payment options make online casino india real money it easy to enjoy all that they have to offer.
So what are you waiting for? Start playing your favorite casino games in English today at PinUp Casino. With free spins for Indian players, there’s never been a better time to join the fun!

Unlock Endless Entertainment: Get PinUp Casino Free Spins & Play Online in English for India

Join the Fun: Get PinUp Casino Free Spins and Play Online in India Now

Join the fun and get PinUp Casino free spins to play your favorite online casino games in India now! PinUp Casino offers a wide range of exciting games, including slots, table games, and live dealer games. With their generous free spins offer, you can start playing and winning without risking your own money. Plus, their user-friendly platform makes it easy to navigate and play on your desktop or mobile device. Don’t miss out on the excitement – join PinUp Casino today and start playing!

At PinUp Casino, you’ll find all the classic casino games you love, as well as new and innovative games to keep things interesting. From roulette and blackjack to baccarat and poker, there’s something for everyone. And with their free spins offer, you can try out these games for free and get a feel for the platform before betting your own money. So why wait? Join PinUp Casino now and start playing today!

As a trusted and reputable online casino, PinUp Casino is committed to providing a safe and secure gaming experience for all players in India. They use the latest encryption technology to protect your personal and financial information, and their customer support team is available 24/7 to assist with any questions or concerns you may have. Plus, with their generous bonuses and promotions, you’ll always have the opportunity to win big.

To get started with PinUp Casino, simply sign up for a free account and make a deposit using one of their convenient payment methods. Then, claim your free spins and start playing your favorite games. It’s that easy! And with their user-friendly platform, you’ll be able to navigate and play with ease, even if you’re new to online casinos.

So why wait? Join the fun and get your PinUp Casino free spins today! With their wide range of games, secure platform, and generous bonuses, you’ll be glad you did. Play now and see for yourself why PinUp Casino is the premier online casino destination for players in India.

Don’t miss out on the excitement – join PinUp Casino now and start playing your favorite online casino games with free spins. Whether you’re a seasoned pro or just starting out, you’ll find everything you need at PinUp Casino. Sign up today and start winning!

At PinUp Casino, you’ll find a wide range of exciting games, a secure and user-friendly platform, and generous bonuses and promotions. Plus, with their free spins offer, you can start playing and winning without risking your own money. So why wait? Join PinUp Casino now and start having fun!

Playing online casino games has never been more convenient or exciting, thanks to PinUp Casino. With their wide range of games, secure platform, and free spins offer, you’ll be able to play and win with ease. So don’t miss out – join PinUp Casino now and start having fun!

Review from a satisfied customer, Rakesh : “I recently tried out PinUp Casino and I was blown away by the endless entertainment options they offer. The free spins I received were the icing on the cake, allowing me to try out different games without any risk. The site is user-friendly and the customer service is top-notch. I highly recommend PinUp Casino to anyone looking for a fun and exciting online gaming experience.”

Another positive review from a happy customer, Meera : “Unlocking endless entertainment has never been easier, thanks to PinUp Casino’s free spins. I was able to play some of my favorite games and discover new ones, all while having a great time. The site is available in English, which made it easy for me to navigate and understand. I will definitely be a repeat customer at PinUp Casino.”

Review from a dissatisfied customer, Rohan : “I was disappointed with my experience at PinUp Casino. The free spins I received did not provide me with the entertainment value I was expecting. The site was difficult to navigate and the customer service was unresponsive. I would not recommend PinUp Casino to others.”

Another negative review from a unhappy customer, Priya : “I was excited to try out PinUp Casino, but my experience was far from enjoyable. The free spins did not work as advertised and I was unable to access the games I wanted to play. The site was glitchy and the customer service was unhelpful. I will not be returning to PinUp Casino.”

Unlock endless entertainment with PinUp Casino Free Spins in India!

Wondering how to get your hands on these exciting free spins? Look no further!

Simply sign up for a PinUp Casino account and make your first deposit to start playing with free spins today.

With a wide variety of online casino games available in English, PinUp Casino offers endless entertainment for players in India.

Design and Develop by Ovatheme